package com.fowo.api.sys.cns;

import java.lang.annotation.*;

/**
 * 用于注解服务方法发生数据变更
 * @author yl_ls
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
@Documented
public @interface ChangeNotice {
    /**
     * 发生变更的对象名
     */
    String objectName();

    /**
     * 变更类型
     */
    ChangeType changeType();

    /**
     * 自定义变更键获取器类
     */
    Class<? extends ChangeNoticeListener.ChangeNoticeKeyAccessor>[] keyAccessor() default {};

    enum ChangeType {
        /**
         * 插入新数据
         */
        Insert,
        /**
         * 更新数据
         */
        Update,
        /**
         * 删除数据
         */
        Remove,
    }
}
